﻿Imports Control_Vuelos_BE
Imports System.Data.SqlClient
Imports System.Data.OleDb

Public Class PasajeroADO
    ReadOnly MiConexion As New ConexionADO()
    ReadOnly cnx As New SqlConnection(MiConexion.GetCnx)
    Dim cmd As New SqlCommand
    Dim lExito As Boolean

    Public Function pr_CrearPasajero(ByVal pBE As M_PasajeroBE) As Boolean
        cmd.Connection = cnx
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "pr_InsertarPasajero"
        Try
            With pBE
                cmd.Parameters.Add(New SqlParameter("@psNroDocumentoId", SqlDbType.VarChar, 11))
                cmd.Parameters("@psNroDocumentoId").Value = .NroDocumentoId
                cmd.Parameters.Add(New SqlParameter("@psAppPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psAppPasajero").Value = .AppPasajero
                cmd.Parameters.Add(New SqlParameter("@psApmPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psApmPasajero").Value = .ApmPasajero
                cmd.Parameters.Add(New SqlParameter("@psNomPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psNomPasajero").Value = .NomPasajero
                cmd.Parameters.Add(New SqlParameter("@psNacionalidadPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psNacionalidadPasajero").Value = .NacionalidadPasajero
                cmd.Parameters.Add(New SqlParameter("@psTlfPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psTlfPasajero").Value = .TlfPasajero
                cmd.Parameters.Add(New SqlParameter("@psRpcPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psRpcPasajero").Value = .RpcPasajero
                cmd.Parameters.Add(New SqlParameter("@psMailPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psMailPasajero").Value = .MailPasajero
                cmd.Parameters.Add(New SqlParameter("@psCodAnalisis", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodAnalisis").Value = .CodAnalisis
                cmd.Parameters.Add(New SqlParameter("@psCodLugarResidencia", SqlDbType.VarChar, 3))
                cmd.Parameters("@psCodLugarResidencia").Value = .CodLugarResidencia
                cmd.Parameters.Add(New SqlParameter("@psCodCentroCosto", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodCentroCosto").Value = .CodCentroCosto
                cmd.Parameters.Add(New SqlParameter("@PctCentroCosto", SqlDbType.Int))
                cmd.Parameters("@PctCentroCosto").Value = .PctCentroCosto
                cmd.Parameters.Add(New SqlParameter("@psCodCentroCosto2", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodCentroCosto2").Value = .CodCentroCosto2
            End With
            cnx.Open()
            cmd.ExecuteNonQuery()
            lExito = True
        Catch x As SqlException
            MsgBox("Reserva (pr_InsertarPasajero) --> " & x.Message, MsgBoxStyle.Critical)
            lExito = False
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return lExito
    End Function

    Public Function pr_ModificarPasajero(ByVal pBE As M_PasajeroBE) As Boolean
        cmd.Connection = cnx
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "pr_ModificarPasajero"
        Try
            With pBE
                cmd.Parameters.Add(New SqlParameter("@pnCodPasajero", SqlDbType.Int))
                cmd.Parameters("@pnCodPasajero").Value = .CodPasajero
                cmd.Parameters.Add(New SqlParameter("@psNroDocumentoId", SqlDbType.VarChar, 11))
                cmd.Parameters("@psNroDocumentoId").Value = .NroDocumentoId
                cmd.Parameters.Add(New SqlParameter("@psAppPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psAppPasajero").Value = .AppPasajero
                cmd.Parameters.Add(New SqlParameter("@psApmPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psApmPasajero").Value = .ApmPasajero
                cmd.Parameters.Add(New SqlParameter("@psNomPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psNomPasajero").Value = .NomPasajero
                cmd.Parameters.Add(New SqlParameter("@psNacionalidadPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psNacionalidadPasajero").Value = .NacionalidadPasajero
                cmd.Parameters.Add(New SqlParameter("@psTlfPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psTlfPasajero").Value = .TlfPasajero
                cmd.Parameters.Add(New SqlParameter("@psRpcPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psRpcPasajero").Value = .RpcPasajero
                cmd.Parameters.Add(New SqlParameter("@psMailPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psMailPasajero").Value = .MailPasajero
                cmd.Parameters.Add(New SqlParameter("@psCodAnalisis", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodAnalisis").Value = .CodAnalisis
                cmd.Parameters.Add(New SqlParameter("@psCodLugarResidencia", SqlDbType.VarChar, 3))
                cmd.Parameters("@psCodLugarResidencia").Value = .CodLugarResidencia
                cmd.Parameters.Add(New SqlParameter("@psCodCentroCosto", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodCentroCosto").Value = .CodCentroCosto
                cmd.Parameters.Add(New SqlParameter("@PctCentroCosto", SqlDbType.Int))
                cmd.Parameters("@PctCentroCosto").Value = .PctCentroCosto
                cmd.Parameters.Add(New SqlParameter("@psCodCentroCosto2", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodCentroCosto2").Value = .CodCentroCosto2
            End With
            cnx.Open()
            cmd.ExecuteNonQuery()
            lExito = True
        Catch x As SqlException
            MsgBox("Reserva (pr_ModificarPasajero) --> " & x.Message, MsgBoxStyle.Critical)
            lExito = False
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return lExito
    End Function

    Public Function pr_EliminarPasajero(ByVal sCodPasajero As Integer) As Boolean
        cmd.Connection = cnx
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "pr_EliminarPasajero"
        Try
            cmd.Parameters.Add(New SqlParameter("@pnCodPasajero", SqlDbType.Int))
            cmd.Parameters("@pnCodPasajero").Value = sCodPasajero
            cnx.Open()
            cmd.ExecuteNonQuery()
            lExito = True
        Catch x As SqlException
            MsgBox("Pasajero (pr_EliminarPasajero) --> " & x.Message, MsgBoxStyle.Critical)
            lExito = False
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return lExito
    End Function

    Public Function pr_TraerPasajero(ByVal sCodp As Integer) As M_PasajeroBE
        Dim dtr As SqlDataReader
        Dim _pBE As New M_PasajeroBE
        Try
            cmd.Connection = cnx
            cmd.CommandType = CommandType.StoredProcedure
            cmd.CommandText = "pr_TraerPasajero"
            cmd.Parameters.Add(New SqlParameter("@pnCodPasajero", SqlDbType.Int))
            cmd.Parameters("@pnCodPasajero").Value = sCodp
            cnx.Open()
            dtr = cmd.ExecuteReader
            If dtr.HasRows = True Then
                dtr.Read()
                With _pBE
                    .CodPasajero = dtr("CodPasajero")
                    .NroDocumentoId = dtr("NroDocumentoId")
                    .AppPasajero = dtr("AppPasajero")
                    .ApmPasajero = dtr("ApmPasajero")
                    .NomPasajero = dtr("NomPasajero")
                    .NacionalidadPasajero = dtr("NacionalidadPasajero")
                    .TlfPasajero = dtr("TlfPasajero")
                    .RpcPasajero = dtr("RpcPasajero")
                    .MailPasajero = dtr("MailPasajero")
                    .CodAnalisis = dtr("CodAnalisis")
                    .CodLugarResidencia = dtr("CodLugarResidencia")
                    .CodCentroCosto = IIf(IsDBNull(dtr("CodCentroCosto")), "", dtr("CodCentroCosto"))
                    .PctCentroCosto = IIf(IsDBNull(dtr("PctCentroCosto")), 0, dtr("PctCentroCosto"))
                    .CodCentroCosto2 = IIf(IsDBNull(dtr("CodCentroCosto2")), "", dtr("CodCentroCosto2"))
                End With
            End If
        Catch x As SqlException
            MsgBox("Reserva (pr_TraerPasajero) --> " & x.Message, MsgBoxStyle.Critical)
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return _pBE
    End Function

    Public Function pr_ListarPasajero(ByVal sFiltro As String) As DataTable
        Dim dt As New DataTable
        Dim sql As String = "SELECT CodPasajero,NroDocumentoId,AppPasajero,ApmPasajero,NomPasajero,NacionalidadPasajero,TlfPasajero,RpcPasajero,MailPasajero,CodAnalisis,CodLugarResidencia FROM dbo.M_Pasajero"
        Dim scriterio As String = IIf(sFiltro.Trim() = "", "", " Where " & Trim(sFiltro))
        Try
            cnx.Open()
            Using da As New SqlDataAdapter(sql & scriterio, cnx)
                da.Fill(dt)
            End Using
            cnx.Close()
            Return dt
        Catch myException As Exception
            MsgBox("Listar Pasajero --> " & myException.Message, MsgBoxStyle.Critical)
            Return Nothing
        End Try
    End Function

    Public Function pr_TraerCodigo(ByVal sDni As String) As Integer
        Dim nCod As Integer = 0
        Try
            cnx.Open()
            With cmd
                .Connection = cnx
                .CommandType = CommandType.Text
                .CommandText = String.Format("SELECT CodPasajero FROM dbo.M_Pasajero WHERE NroDocumentoId='{0}'", sDni)
                nCod = .ExecuteScalar()
            End With
        Catch myException As Exception
            MsgBox("Correlativo --> " & myException.Message, MsgBoxStyle.Critical)
            Return Nothing
        Finally
            cnx.Close()
        End Try
        Return nCod
    End Function

    Public Function pr_Reservas() As DataSet
        Try
            Dim sql As String = "SELECT M_Pasajero.NroDocumentoId,M_Pasajero.NomPasajero,M_Pasajero.TlfPasajero,M_Pasajero.RpcPasajero,M_Pasajero.MailPasajero, " & _
               "M_Pasajero.CodAnalisis,M_Pasajero.NacionalidadPasajero,M_Pasajero.ApmPasajero,M_Pasajero.AppPasajero,M_Pasajero.CodPasajero," & _
               "M_Pasajero.AppPasajero+' '+M_Pasajero.ApmPasajero+' '+M_Pasajero.NomPasajero as Nombre,Analisis.CodAnl+' '+Analisis.DesAnl as DesAnl " & _
               "FROM M_Pasajero INNER JOIN Analisis ON M_Pasajero.CodAnalisis=Analisis.CodAnl WHERE M_Pasajero.NroDocumentoId IN (SELECT D_Manifiesto.NroDocumentoId FROM D_Manifiesto)"
            Dim sql1 As String = "SELECT D_Manifiesto.NroDocumentoId,D_Manifiesto.CodViaje,D_Manifiesto.CodAnalisis, " & _
                                 "D_Manifiesto.CodCentroCosto,D_Manifiesto.FlgResponsable, C_Manifiesto.FchViaje,C_Manifiesto.HraViaje, M_EmpresaTransporte.NomEmpresa, " & _
                                 "M_Lugar.NomLugar as Origen, M_Lugar1.NomLugar as Destino FROM D_Manifiesto INNER JOIN C_Manifiesto " & _
                                 "ON D_Manifiesto.CodViaje = C_Manifiesto.CodViaje INNER JOIN M_EmpresaTransporte " & _
                                 "ON C_Manifiesto.CodEmpresa = M_EmpresaTransporte.CodEmpresa INNER JOIN M_Lugar " & _
                                 "ON C_Manifiesto.CodLugarOrigen = M_Lugar.CodLugar INNER JOIN M_Lugar M_Lugar1 " & _
                                 "ON C_Manifiesto.CodLugarDestino = M_Lugar1.CodLugar WHERE D_Manifiesto.NroDocumentoId IN (SELECT M_Pasajero.NroDocumentoId FROM M_Pasajero)"
            Dim cn As New SqlConnection(MiConexion.GetCnx)
            Dim dataSet As New DataSet()
            Using cn
                cn.Open()
                Using oleDBAdapter1 As New OleDbDataAdapter(sql, "Provider=SQLOLEDB;" & MiConexion.GetCnx)
                    Using oleDBAdapter2 As New OleDbDataAdapter(sql1, "Provider=SQLOLEDB;" & MiConexion.GetCnx)
                        oleDBAdapter1.Fill(dataSet, "Pasajero")
                        oleDBAdapter2.Fill(dataSet, "Detalle")
                    End Using
                End Using
                dataSet.Relations.Add("Detalle", dataSet.Tables("Pasajero").Columns("NroDocumentoId"), dataSet.Tables("Detalle").Columns("NroDocumentoId"))
                Return dataSet
            End Using
        Catch myException As Exception
            MsgBox("PasajeroADO (pr_Reservas) --> " & myException.Message, MsgBoxStyle.Critical)
            Return Nothing
        End Try
    End Function

    Public Function pr_NumeroSiguiente() As Integer
        Try
            Dim nCod As Integer = 0
            Dim sql As String = "SELECT ISNULL(MAX(cast(Substring(NroDocumentoID,4,5)as int )),0)+1 as nrosgte FROM m_pasajero WHERE LEFT(NroDocumentoID,3) = 'PRV' "
            Dim cn As New SqlConnection(MiConexion.GetCnx)
            Using cn
                cn.Open()
                Dim mySqlCommand As SqlCommand
                Try
                    mySqlCommand = New SqlCommand(sql, cn)
                    nCod = mySqlCommand.ExecuteScalar
                    Return nCod
                Catch myException As Exception
                    Return 0
                End Try
            End Using
        Catch myException As Exception
            MsgBox("PasajeroADO (pr_NumeroSiguiente) --> " & myException.Message, MsgBoxStyle.Critical)
            Return 0
        End Try
    End Function

End Class
